#include "modbus.h"
#include "freq_table_a2.h"

//==========================================================
// RW-BIT
//==========================================================
RW_BIT rw_bit=
{
    0,            //  0000   禁止杯盘抽屉动作.   1: 禁止; 0: 允许.
};
RO_BIT ro_bit =
{
    0,
};
//==========================================================
// RW-WORD
//==========================================================

RW_WORD rw_word =
{
    0,                                   // 0000    当前执行指令
};

//==========================================================
// RO-WORD
//==========================================================

RO_WORD ro_word =
{
   0
};

//==========================================================
// DIAGNOSTIC
//==========================================================
ushort  diagnostic                  = 0;        // 诊断寄存器
ushort  bus_message_count               = 0;        // 总线上消息数量
ushort  bus_error_count                 = 0;        // 总线上通讯错误数量
ushort  bus_exception_count             = 0;        // 总线上异常应答数量
ushort  server_message_count            = 0;        // 下位机消息数量
ushort  server_no_response_count        = 0;        // 下位机未响应消息数量
ushort  server_exception_count          = 0;        // 下位机异常应答消息数量
ushort  server_busy_count           = 0;        // 下位机状态忙数量
ushort  bus_char_overrun_count      = 0;        // 总线字符过载（Overrun）数量

ushort  server_status               = 0;        // 下位机状态

uchar program_status          = 0;
bit ps_listen_only        = 0;    // 只听模式
bit ps_server_busy        = 0;   // 设备忙

uchar event_count;
uchar event_log[MAX_EVENT_COUNT];       //总事件

void register_init()
{
    rw_word.XMAX_SPEED = X_MAX_SPEED;
    rw_word.YMAX_SPEED = Y_MAX_SPEED;//设置最大速度
    rw_word.X_MAX_DISTANCE = 10000;
    rw_word.Y_MAX_DISTANCE = 10000;
    rw_word.X_REF_SPEED = 0;
    rw_word.X_REF_POS = 0x07fffff;
    rw_word.PICKUP_CUP_DISTANCE = (short)(PICKUP_CUP_OFFSET * SPR / Y_PERIMETER);
    ro_word.REAGENT_RESIDUAL_VOLUME = 0xffff;
}
